<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- 
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License. 
-->
<html>
<head>
    <link type="text/css" rel="stylesheet" href="https://struts.apache.org/css/default.css">
    <style type="text/css">
        .dp-highlighter {
            width:95% !important;
        }
    </style>
    <style type="text/css">
        .footer {
            background-image:      url('https://cwiki.apache.org/confluence/images/border/border_bottom.gif');
            background-repeat:     repeat-x;
            background-position:   left top;
            padding-top:           4px;
            color:                 #666;
        }
    </style>
    <script type="text/javascript" language="javascript">
        var hide = null;
        var show = null;
        var children = null;

        function init() {
            /* Search form initialization */
            var form = document.forms['search'];
            if (form != null) {
                form.elements['domains'].value = location.hostname;
                form.elements['sitesearch'].value = location.hostname;
            }

            /* Children initialization */
            hide = document.getElementById('hide');
            show = document.getElementById('show');
            children = document.all != null ?
                    document.all['children'] :
                    document.getElementById('children');
            if (children != null) {
                children.style.display = 'none';
                show.style.display = 'inline';
                hide.style.display = 'none';
            }
        }

        function showChildren() {
            children.style.display = 'block';
            show.style.display = 'none';
            hide.style.display = 'inline';
        }

        function hideChildren() {
            children.style.display = 'none';
            show.style.display = 'inline';
            hide.style.display = 'none';
        }
    </script>
    <title>Other Resources</title>
</head>
<body onload="init()">
<table border="0" cellpadding="2" cellspacing="0" width="100%">
    <tr class="topBar">
        <td align="left" valign="middle" class="topBarDiv" align="left" nowrap>
            &nbsp;<a href="home.html">Home</a>&nbsp;&gt;&nbsp;<a href="other-resources.html">Other Resources</a>
        </td>
        <td align="right" valign="middle" nowrap>
            <form name="search" action="https://www.google.com/search" method="get">
                <input type="hidden" name="ie" value="UTF-8" />
                <input type="hidden" name="oe" value="UTF-8" />
                <input type="hidden" name="domains" value="" />
                <input type="hidden" name="sitesearch" value="" />
                <input type="text" name="q" maxlength="255" value="" />
                <input type="submit" name="btnG" value="Google Search" />
            </form>
        </td>
    </tr>
</table>

<div id="PageContent">
    <div class="pageheader" style="padding: 6px 0px 0px 0px;">
        <!-- We'll enable this once we figure out how to access (and save) the logo resource -->
        <!--img src="/wiki/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"-->
        <div style="margin: 0px 10px 0px 10px" class="smalltext">Apache Struts 2 Documentation</div>
        <div style="margin: 0px 10px 8px 10px"  class="pagetitle">Other Resources</div>

        <div class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;">
            <a href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=74009">
                <img src="https://cwiki.apache.org/confluence/images/icons/notep_16.gif"
                     height="16" width="16" border="0" align="absmiddle" title="Edit Page"></a>
            <a href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=74009">Edit Page</a>
            &nbsp;
            <a href="https://cwiki.apache.org/confluence/pages/listpages.action?key=WW">
                <img src="https://cwiki.apache.org/confluence/images/icons/browse_space.gif"
                     height="16" width="16" border="0" align="absmiddle" title="Browse Space"></a>
            <a href="https://cwiki.apache.org/confluence/pages/listpages.action?key=WW">Browse Space</a>
            &nbsp;
            <a href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&fromPageId=74009">
                <img src="https://cwiki.apache.org/confluence/images/icons/add_page_16.gif"
                     height="16" width="16" border="0" align="absmiddle" title="Add Page"></a>
            <a href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&fromPageId=74009">Add Page</a>
            &nbsp;
            <a href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=74009">
                <img src="https://cwiki.apache.org/confluence/images/icons/add_blogentry_16.gif"
                     height="16" width="16" border="0" align="absmiddle" title="Add News"></a>
            <a href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=74009">Add News</a>
        </div>
    </div>

    <div class="pagecontent">
        <div class="wiki-content">
            <div id="ConfluenceContent"><h2 id="OtherResources-OtherResources">Other Resources</h2>

<p>Several Struts 2 books, articles, and presentations are available elsewhere.</p>

<h3 id="OtherResources-Books">Books</h3>

<div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><ul><li><a shape="rect" class="external-link" href="http://opensource.atlassian.com/confluence/oss/display/BOOKS/ISBN-1590599039" rel="nofollow">Practical Apache Struts 2 Web 2.0 Projects</a> (Ian Roughley), print-only, full-length, available now! <img class="emoticon emoticon-yellow-star" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/star_yellow.png" data-emoticon-name="yellow-star" alt="(star)"></li><li><a shape="rect" class="external-link" href="http://www.infoq.com/minibooks/starting-struts2" rel="nofollow">Starting with Struts 2</a> (Ian Roughley), Free PDF mini-book, print version also available.</li><li><a shape="rect" class="external-link" href="http://opensource.atlassian.com/confluence/oss/display/BOOKS/ISBN-1932394532" rel="nofollow">WebWork in Action book</a> (Patrick Lightbody, Jason Carreira), print only. (<em>Most of WW2 in Action applies to Struts 2. The Struts 2 package names changed, and we've added some features, but the fundamentals remain the same.</em>)</li><li><a shape="rect" class="external-link" href="http://www.manning.com/dbrown/" rel="nofollow">Struts 2 in Action</a> (Don Brown, Chad Michael Davis, Scott Stanlick) Some early access chapters available now in PDF.</li><li><a shape="rect" class="external-link" href="http://opensource.atlassian.com/confluence/oss/display/BOOKS/ISBN-0980331609" rel="nofollow">Struts 2 Design and Programming</a> (Bud Kurniawan), print-only.</li><li><a shape="rect" class="external-link" href="http://www.packtpub.com/apache-struts-2-web-application-development-beginners-guide/book" rel="nofollow">Apache Struts 2 Web Application Development</a> (Dave Newton)
<h4 id="OtherResources-ComingSoon">Coming Soon</h4></li><li><a shape="rect" class="external-link" href="http://opensource.atlassian.com/confluence/oss/display/BOOKS/ISBN-0071489908" rel="nofollow">Struts 2: The Complete Reference</a> (James Holmes), print-only, pre-order only</li></ul>
</td></tr></tbody></table></div>





<h3 id="OtherResources-Articles">Articles</h3>

<p>Articles are organized into the categories Adoption and Migration, Ajax, CRUD and Data Access, General, Getting Started.</p>

<h4 id="OtherResources-AdoptionandMigration">Adoption and Migration</h4>

<ul><li><a shape="rect" class="external-link" href="http://www.javaworld.com/javaworld/jw-10-2007/jw-10-adoptingstruts2.html" rel="nofollow">Adopting Struts 2.0</a> (S. Sangeetha and S. V. Subrahmanya)</li><li><a shape="rect" class="external-link" href="http://www.developer.com/design/article.php/3709901" rel="nofollow">Comparing Struts 1 and Struts 2</a> (Michael Klaene)</li><li><a shape="rect" class="external-link" href="http://www.infoq.com/articles/migrating-struts-2-part2" rel="nofollow">Migrating Struts Apps to Struts 2</a> (Ian Roughly)</li><li><a shape="rect" class="external-link" href="http://www.strutsuniversity.org/Migrating+Tutorial" rel="nofollow">Migrating to Apache Struts 2: A tutorial for Struts 1 Developers.</a> (Ted Husted)</li></ul>


<h4 id="OtherResources-Ajax">Ajax</h4>

<ul><li><a shape="rect" class="external-link" href="http://www.theserverside.com/tt/articles/article.tss?l=AjaxCRUDStruts2" rel="nofollow">Ajax CRUD with Struts 2 and Tibco GI</a> (Brian Walsh)</li><li><a shape="rect" class="external-link" href="http://www.javaworld.com/javaworld/jw-08-2007/jw-08-ajaxtables.html" rel="nofollow">Ajax programming with Struts 2</a> (Oleg Mikheev)</li><li><a shape="rect" class="external-link" href="http://struts.javabeat.net/articles/2007/06/ajax-support-in-struts-2-0/3" rel="nofollow">Ajax support in struts 2.0</a> (Jesintha Priyadarshini L)</li><li><a shape="rect" class="external-link" href="http://www.firstpartners.net/kb/index.php/Easy_Ajax_using_Struts_2" rel="nofollow">Easy AJAX with Struts 2</a> (firstpartners.net)</li><li><a shape="rect" class="external-link" href="http://struts.apache.org/2.x/docs/struts-2-spring-2-jpa-ajax.html">Struts 2 + Spring 2 + JPA + AJAX</a> (Musachy Barroso)</li><li>(Struts 1) <a shape="rect" class="external-link" href="http://www.javaworld.com/javaworld/jw-09-2006/jw-0911-ajax.html" rel="nofollow">AjaxChat: Chatting, the AJAX Way!</a> (Frank Zammetti)</li><li><a shape="rect" class="external-link" href="http://www.mouseoverstudio.com/blog/?p=36" rel="nofollow">Struts 2 JSON and dojo.rpc (Portuguese)</a> (Diego Carrion)</li></ul>


<h4 id="OtherResources-BlogsaboutStruts">Blogs about Struts</h4>

<ul><li><a shape="rect" class="external-link" href="http://java-x.blogspot.com/search/label/struts" rel="nofollow">Abhi on Java </a> (Abhi Vuyyuru)</li><li><a shape="rect" class="external-link" href="http://www.jroller.com/TedHusted/category/Struts" rel="nofollow">Macaroni </a> (Ted Husted)</li><li><a shape="rect" class="external-link" href="http://www.vitarara.org/cms/struts2cookbook" rel="nofollow">Mark's Struts 2 Cookbook</a> (Mark Menard)</li><li><a shape="rect" class="external-link" href="http://www.Struts2.org/" rel="nofollow">Struts 2 Help and Reference</a></li></ul>


<h4 id="OtherResources-CRUDandDataAccess">CRUD and Data Access</h4>

<ul><li><a shape="rect" class="external-link" href="http://www.theserverside.com/tt/articles/article.tss?l=AjaxCRUDStruts2" rel="nofollow">Ajax CRUD with Struts 2 and Tibco GI</a> (Brian Walsh)</li><li><a shape="rect" class="external-link" href="http://www.learntechnology.net/webwork-crud-lm.do" rel="nofollow">CRUD with WebWork, Spring, and JSTL</a> (Larry Meador)</li><li><a shape="rect" class="external-link" href="http://appfuse.org/display/APF/Demos+and+Videos" rel="nofollow">Easy CRUD with Struts 2</a> (QuickTime video with Matt Raible - 8 minute)</li><li><a shape="rect" class="external-link" href="http://struts.apache.org/2.x/docs/struts-2-spring-2-jpa-ajax.html">Struts 2 + Spring 2 + JPA + AJAX</a> (Musachy Barrosso)</li><li><a shape="rect" class="external-link" href="http://struts.apache.org/2.x/docs/crud-demo-i.html">Struts 2 CRUD Example</a> (Philip Luppens)</li></ul>


<h4 id="OtherResources-General">General</h4>

<ul><li><a shape="rect" class="external-link" href="http://appfuse.org/display/APF/Using+Struts+2" rel="nofollow">AppFuse and Struts 2</a> (Matt Raible)</li><li><a shape="rect" class="external-link" href="http://www.theserverside.com/tt/articles/article.tss?l=SmartURLs" rel="nofollow">Building Struts 2 Apps without XML Gluecode</a> (Ted Husted)</li><li><a shape="rect" class="external-link" href="http://struts.apache.org/2.x/docs/extending-an-application-with-custom-plugins.html">Extending an Application with Custom Plugins</a> (Musachy Barrosso)</li><li><a shape="rect" class="external-link" href="http://raibledesigns.com/rd/entry/integrating_struts_2_jsf_facelets" rel="nofollow">Integrating Struts 2 + JSF + Facelets</a> (Matt Raible)</li><li><a shape="rect" class="external-link" href="http://www.developer.com/open/article.php/3694496" rel="nofollow">Leveraging Struts2 Type Conversion</a> (David DeWolf)</li><li><a shape="rect" class="external-link" href="http://clearspace.jivesoftware.com/blogs/clearspace/2007/08/10/product-internationalization" rel="nofollow">Product Internationalization</a> (Todd McCullough, Jive Software)</li><li><a shape="rect" class="external-link" href="http://www.roseindia.net/struts/struts2/struts-2-tags.shtml" rel="nofollow">Struts 2 Tags</a> (Rose India)</li><li><a shape="rect" class="external-link" href="http://thedevelopercorner.blogspot.com/2007/08/struts-2-wired-by-spring.html" rel="nofollow">Struts 2 wired by Spring</a> (Daniel Ambr&#243;sio)</li><li><a shape="rect" class="external-link" href="http://www.javaworld.com/javaworld/jw-10-2007/jw-10-struts2inaction.html?nhtje=101607entjava&amp;" rel="nofollow">Struts 2.0 in Action </a></li><li><a shape="rect" class="external-link" href="http://www.lunatech-research.com/archives/2005/07/29/struts-urls" rel="nofollow">Struts URLs for perfectionists</a> (Peter Hilton)</li><li><a shape="rect" class="external-link" href="http://omkarp.blogspot.com/2007/07/working-with-cookies-in-struts2.html" rel="nofollow">Working with cookies in Struts 2</a> (Omkar Patil)</li><li><a shape="rect" class="external-link" href="http://www.vaannila.com/struts-2/struts-2-tutorial/struts-2-tutorial.html" rel="nofollow">Struts 2 Tutorials</a></li></ul>


<h4 id="OtherResources-GettingStarted">Getting Started</h4>

<ul><li><a shape="rect" class="external-link" href="http://www.wantii.com/wordpress/?cat=3" rel="nofollow">Getting Started with Struts2</a> (Wesley Wannemacher)</li><li><a shape="rect" class="external-link" href="http://code.google.com/p/sq1-struts2/" rel="nofollow">Struts 2 from Square One</a> Draft manuscript covering part one of a  four-day training course (Ted Husted)</li><li><a shape="rect" class="external-link" href="https://www.arctechsoftware.com/tutorial/tutorial.do?subcatId=4" rel="nofollow">Struts 2 Tutorial</a> Struts 2 with Spring and Hibernate using Eclipse (ArcTech Software)($)</li><li><a shape="rect" class="external-link" href="http://www.roseindia.net/struts/struts2/index.shtml" rel="nofollow">Struts 2 Tutorial</a> (Rose India)</li></ul>


<h4 id="OtherResources-Testing">Testing</h4>

<ul><li><a shape="rect" class="external-link" href="http://www.soft-gems.net/index.php?option=com_content&amp;task=view&amp;id=47&amp;Itemid=33" rel="nofollow">Action Unit Testing With Struts 2.0 </a></li><li><a shape="rect" class="external-link" href="http://www.vitarara.org/cms/struts_2_cookbook/integration_testing" rel="nofollow">Integration Testing Struts 2, Spring, and Hibernate JPA </a></li><li><a shape="rect" class="external-link" href="http://arsenalist.com/2007/06/18/unit-testing-struts-2-actions-spring-junit/" rel="nofollow">Unit Testing Struts 2 Actions wired with Spring using JUnit </a> (arsenalist)</li></ul>


<h4 id="OtherResources-Validation">Validation</h4>

<ul><li><a shape="rect" class="external-link" href="http://www.oreillynet.com/onjava/blog/" rel="nofollow">Struts 2.0 Validations using Annotations</a> (Krishna Srinivasan)</li><li><a shape="rect" class="external-link" href="http://arsenalist.com/2007/05/10/struts-2-validation-using-annotations/" rel="nofollow">Validation using Annotations</a> (arsenalist)</li></ul>


<h3 id="OtherResources-Presentations">Presentations</h3>

<ul><li>Animated Tutorial for Struts2 (Mohammad SeyedAlavi)
	<ul><li><a shape="rect" class="external-link" href="http://khorshid.ut.ac.ir/~m.s.alavi/Tutorial.zip" rel="nofollow">PowerPoint version</a> ZIP download (may not render correctly under OpenOffice)</li><li><a shape="rect" class="external-link" href="http://khorshid.ut.ac.ir/~m.s.alavi/Tutorial_pdf.zip" rel="nofollow">PDF version</a> ZIP download (without animation)</li></ul>
	</li><li><a shape="rect" class="external-link" href="http://www.StrutsUniversity.org/Coding+Ajax+Applications+with+Struts" rel="nofollow">Coding Ajax Applications with Struts</a> (Ted Husted)</li><li><a shape="rect" class="external-link" href="http://static.raibledesigns.com/repository/presentations/MigratingFromStruts1ToStruts2.pdf" rel="nofollow">Migrating From Struts 1 to Struts 2 presentation</a> (Matt Raible)</li><li><a shape="rect" class="external-link" href="http://www.StrutsUniversity.org/Retrofitting+Struts+for+Ajax+Taglibs" rel="nofollow">Retrofitting Struts for Ajax Taglibs</a> (Ted Husted)</li><li><a shape="rect" class="external-link" href="http://opensource.atlassian.com/confluence/oss/download/attachments/829/webwork.pdf" rel="nofollow">WebWork 2 presentation</a> (Jason Carreira)</li></ul>


<h3 id="OtherResources-Tools">Tools</h3>
<ul><li><a shape="rect" class="external-link" href="http://code.google.com/p/strutson/" rel="nofollow">Strutson</a>. Command line to generate applications based on Hibernate, JPA, Spring and Convention Plugin. It supports generation of actions, CRUD views and services from model classes.</li></ul></div>
        </div>

        
    </div>
</div>
<div class="footer">
    Generated by CXF SiteExporter
</div>
</body>
</html>
